package com.weishu.installment.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;

/**
 *
 * @TableName t_sf_contract
 */
@TableName(value ="t_sf_contract")
@Data
public class SfContractEntity implements Serializable {
    /**
     * 主键id
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    @TableField(exist = false)
    private Integer pageSize;
    @TableField(exist = false)
    private Integer pageNum;

    /**
     * 合同编号（系统生成）
     */
    private String sfContractNo;

    /**
     * 外部合同编号（线下合同编号）
     */
    private String outContractNo;

    /**
     * 上一合同ID，续约合同的时候
     */
    private Long lastContractId;

    /**
     * 上一合同编号
     */
    private String lastContractNo;

    /**
     * 商户ID
     */
    private Long businessId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门编号
     */
    private String deptNo;

    /**
     * 小区名(使用楼盘名称)
     */
    private String premiseName;

    /**
     * 房产编号
     */
    private String houseId;

    /**
     * 房产信息(考虑在房产表中增加house_name，然后带出)
     */
    private String houseName;

    /**
     * 所有权类型(1：国有房产，2：直管房产，3：自管房产，4：军队房产，5：集体所有房产，6：私有(自由)房产，7：港、澳、台投资房产，8：涉外房产，9：其它房产)
     */
    private Integer houseType;

    /**
     * 房产证书编号
     */
    private String houseZsNo;

    /**
     * 产权地址
     */
    private String cqAddress;

    /**
     * 业主ID
     */
    private Long ownerId;

    /**
     * 业主姓名
     */
    private String ownerName;

    /**
     * 是否为签约人（业主是否为签约人） 0：是，1：否
     */
    private Integer signWithOwner;

    /**
     * 业主证件号码（身份证）
     */
    private String ownerIdCard;

    /**
     * 业主手机号
     */
    private String ownerMobile;

    /**
     * 业主联系地址
     */
    private String ownerContactAddress;

    /**
     * 签约人(甲方)
     */
    private String signUserName;

    /**
     * 签约人证件号（身份证）
     */
    private String signUserIdCard;

    /**
     * 签约人手机号
     */
    private String signUserMobile;

    /**
     * 紧急联系电话
     */
    private String signUserEmergencyPhone;

    /**
     * 银行卡号
     */
    private String bankCard;

    /**
     * 持卡人姓名
     */
    private String bankUserName;

    /**
     * 持卡人身份证
     */
    private String bankUserIdCard;

    /**
     * 银行ID（开户总行ID）
     */
    private Long bankId;

    /**
     * 银行名称（开户总行名称，对应bank表）
     */
    private String bankName;

    /**
     * 开户行(支行)
     */
    private String bankOpen;

    /**
     * 租约期限开始时间
     */
    private Date leaseStartTime;

    /**
     * 租约期限结束时间
     */
    private Date leaseEndTime;

    /**
     * 收房月租金
     */
    private BigDecimal monthRent;

    /**
     * 房产押金
     */
    private BigDecimal depositMoney;

    /**
     * 支付方式(押X付Y的X)
     */
    private Integer depositType;

    /**
     * 支付方式(押X付Y的Y）
     */
    private Integer paymentType;

    /**
     * 合同签订时间，（暂定设置为提交日期）
     */
    private Date conSignTime;

    /**
     * 合同录入时间，（暂定设置为提交日期）
     */
    private Date conInfoTime;

    /**
     * 合同审核时间，（暂定设置为提交日期）
     */
    private Date conAudTime;

    /**
     * 合同录入人（暂定设置为创建人）
     */
    private Long operId;

    /**
     * 收房人，（暂定设置为创建人）
     */
    private Long sfUserId;

    /**
     * 收房人姓名
     */
    private String sfUserName;

    /**
     * 合同状态（1，草稿。2，已提交。3，已解约。4，已结束。9:作废）
     */
    private Integer status;

    /**
     * 续约状态（0，未续约。1，已续约）
     */
    private Integer xyStatus;

    /**
     * 是否收房贷,0:否 1:是
     */
    private Integer sfLoanFlg;

    /**
     * 冻结状态：0未冻结 1已冻结(申请金融服务的时候，才会有冻结状态)
     */
    private Integer freezeStatus;

    /**
     * 银行账户类型（对公账户、对私账户）AccountTypeEnum
     */
    private Integer accountType;

    /**
     * 银行卡号
     */
    private String bankCardNumber;

    /**
     * 账户名称（对公为企业名称，对私为姓名）
     */
    private String accountName;

    /**
     * 联行行号（手输，对公必须）
     */
    private String bankBranchCodeLh;

    /**
     * 开户行所在省ID
     */
    private Integer bankAccountProvince;

    /**
     * 备注
     */
    private String remark;

    /**
     * 预留字段1
     */
    private Integer reserve1;

    /**
     * 预留字段2
     */
    private Integer reserve2;

    /**
     * 预留字段3
     */
    private String reserve3;

    /**
     * 预留字段4
     */
    private String reserve4;

    /**
     * 预留字段5
     */
    private String reserve5;

    /**
     * 删除标识，0:未删除，1：删除
     */
    private Integer delFlg;

    /**
     * 创建用户ID
     */
    private Long createUserid;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新用户ID
     */
    private Long updateUserid;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 房产类型：1.合租；2.整租；3.公寓
     */
    private Integer houseLeaseType;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        SfContractEntity other = (SfContractEntity) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getSfContractNo() == null ? other.getSfContractNo() == null : this.getSfContractNo().equals(other.getSfContractNo()))
            && (this.getOutContractNo() == null ? other.getOutContractNo() == null : this.getOutContractNo().equals(other.getOutContractNo()))
            && (this.getLastContractId() == null ? other.getLastContractId() == null : this.getLastContractId().equals(other.getLastContractId()))
            && (this.getLastContractNo() == null ? other.getLastContractNo() == null : this.getLastContractNo().equals(other.getLastContractNo()))
            && (this.getBusinessId() == null ? other.getBusinessId() == null : this.getBusinessId().equals(other.getBusinessId()))
            && (this.getDeptId() == null ? other.getDeptId() == null : this.getDeptId().equals(other.getDeptId()))
            && (this.getDeptNo() == null ? other.getDeptNo() == null : this.getDeptNo().equals(other.getDeptNo()))
            && (this.getPremiseName() == null ? other.getPremiseName() == null : this.getPremiseName().equals(other.getPremiseName()))
            && (this.getHouseId() == null ? other.getHouseId() == null : this.getHouseId().equals(other.getHouseId()))
            && (this.getHouseName() == null ? other.getHouseName() == null : this.getHouseName().equals(other.getHouseName()))
            && (this.getHouseType() == null ? other.getHouseType() == null : this.getHouseType().equals(other.getHouseType()))
            && (this.getHouseZsNo() == null ? other.getHouseZsNo() == null : this.getHouseZsNo().equals(other.getHouseZsNo()))
            && (this.getCqAddress() == null ? other.getCqAddress() == null : this.getCqAddress().equals(other.getCqAddress()))
            && (this.getOwnerId() == null ? other.getOwnerId() == null : this.getOwnerId().equals(other.getOwnerId()))
            && (this.getOwnerName() == null ? other.getOwnerName() == null : this.getOwnerName().equals(other.getOwnerName()))
            && (this.getSignWithOwner() == null ? other.getSignWithOwner() == null : this.getSignWithOwner().equals(other.getSignWithOwner()))
            && (this.getOwnerIdCard() == null ? other.getOwnerIdCard() == null : this.getOwnerIdCard().equals(other.getOwnerIdCard()))
            && (this.getOwnerMobile() == null ? other.getOwnerMobile() == null : this.getOwnerMobile().equals(other.getOwnerMobile()))
            && (this.getOwnerContactAddress() == null ? other.getOwnerContactAddress() == null : this.getOwnerContactAddress().equals(other.getOwnerContactAddress()))
            && (this.getSignUserName() == null ? other.getSignUserName() == null : this.getSignUserName().equals(other.getSignUserName()))
            && (this.getSignUserIdCard() == null ? other.getSignUserIdCard() == null : this.getSignUserIdCard().equals(other.getSignUserIdCard()))
            && (this.getSignUserMobile() == null ? other.getSignUserMobile() == null : this.getSignUserMobile().equals(other.getSignUserMobile()))
            && (this.getSignUserEmergencyPhone() == null ? other.getSignUserEmergencyPhone() == null : this.getSignUserEmergencyPhone().equals(other.getSignUserEmergencyPhone()))
            && (this.getBankCard() == null ? other.getBankCard() == null : this.getBankCard().equals(other.getBankCard()))
            && (this.getBankUserName() == null ? other.getBankUserName() == null : this.getBankUserName().equals(other.getBankUserName()))
            && (this.getBankUserIdCard() == null ? other.getBankUserIdCard() == null : this.getBankUserIdCard().equals(other.getBankUserIdCard()))
            && (this.getBankId() == null ? other.getBankId() == null : this.getBankId().equals(other.getBankId()))
            && (this.getBankName() == null ? other.getBankName() == null : this.getBankName().equals(other.getBankName()))
            && (this.getBankOpen() == null ? other.getBankOpen() == null : this.getBankOpen().equals(other.getBankOpen()))
            && (this.getLeaseStartTime() == null ? other.getLeaseStartTime() == null : this.getLeaseStartTime().equals(other.getLeaseStartTime()))
            && (this.getLeaseEndTime() == null ? other.getLeaseEndTime() == null : this.getLeaseEndTime().equals(other.getLeaseEndTime()))
            && (this.getMonthRent() == null ? other.getMonthRent() == null : this.getMonthRent().equals(other.getMonthRent()))
            && (this.getDepositMoney() == null ? other.getDepositMoney() == null : this.getDepositMoney().equals(other.getDepositMoney()))
            && (this.getDepositType() == null ? other.getDepositType() == null : this.getDepositType().equals(other.getDepositType()))
            && (this.getPaymentType() == null ? other.getPaymentType() == null : this.getPaymentType().equals(other.getPaymentType()))
            && (this.getConSignTime() == null ? other.getConSignTime() == null : this.getConSignTime().equals(other.getConSignTime()))
            && (this.getConInfoTime() == null ? other.getConInfoTime() == null : this.getConInfoTime().equals(other.getConInfoTime()))
            && (this.getConAudTime() == null ? other.getConAudTime() == null : this.getConAudTime().equals(other.getConAudTime()))
            && (this.getOperId() == null ? other.getOperId() == null : this.getOperId().equals(other.getOperId()))
            && (this.getSfUserId() == null ? other.getSfUserId() == null : this.getSfUserId().equals(other.getSfUserId()))
            && (this.getSfUserName() == null ? other.getSfUserName() == null : this.getSfUserName().equals(other.getSfUserName()))
            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
            && (this.getXyStatus() == null ? other.getXyStatus() == null : this.getXyStatus().equals(other.getXyStatus()))
            && (this.getSfLoanFlg() == null ? other.getSfLoanFlg() == null : this.getSfLoanFlg().equals(other.getSfLoanFlg()))
            && (this.getFreezeStatus() == null ? other.getFreezeStatus() == null : this.getFreezeStatus().equals(other.getFreezeStatus()))
            && (this.getAccountType() == null ? other.getAccountType() == null : this.getAccountType().equals(other.getAccountType()))
            && (this.getBankCardNumber() == null ? other.getBankCardNumber() == null : this.getBankCardNumber().equals(other.getBankCardNumber()))
            && (this.getAccountName() == null ? other.getAccountName() == null : this.getAccountName().equals(other.getAccountName()))
            && (this.getBankBranchCodeLh() == null ? other.getBankBranchCodeLh() == null : this.getBankBranchCodeLh().equals(other.getBankBranchCodeLh()))
            && (this.getBankAccountProvince() == null ? other.getBankAccountProvince() == null : this.getBankAccountProvince().equals(other.getBankAccountProvince()))
            && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
            && (this.getReserve1() == null ? other.getReserve1() == null : this.getReserve1().equals(other.getReserve1()))
            && (this.getReserve2() == null ? other.getReserve2() == null : this.getReserve2().equals(other.getReserve2()))
            && (this.getReserve3() == null ? other.getReserve3() == null : this.getReserve3().equals(other.getReserve3()))
            && (this.getReserve4() == null ? other.getReserve4() == null : this.getReserve4().equals(other.getReserve4()))
            && (this.getReserve5() == null ? other.getReserve5() == null : this.getReserve5().equals(other.getReserve5()))
            && (this.getDelFlg() == null ? other.getDelFlg() == null : this.getDelFlg().equals(other.getDelFlg()))
            && (this.getCreateUserid() == null ? other.getCreateUserid() == null : this.getCreateUserid().equals(other.getCreateUserid()))
            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
            && (this.getUpdateUserid() == null ? other.getUpdateUserid() == null : this.getUpdateUserid().equals(other.getUpdateUserid()))
            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
            && (this.getHouseLeaseType() == null ? other.getHouseLeaseType() == null : this.getHouseLeaseType().equals(other.getHouseLeaseType()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getSfContractNo() == null) ? 0 : getSfContractNo().hashCode());
        result = prime * result + ((getOutContractNo() == null) ? 0 : getOutContractNo().hashCode());
        result = prime * result + ((getLastContractId() == null) ? 0 : getLastContractId().hashCode());
        result = prime * result + ((getLastContractNo() == null) ? 0 : getLastContractNo().hashCode());
        result = prime * result + ((getBusinessId() == null) ? 0 : getBusinessId().hashCode());
        result = prime * result + ((getDeptId() == null) ? 0 : getDeptId().hashCode());
        result = prime * result + ((getDeptNo() == null) ? 0 : getDeptNo().hashCode());
        result = prime * result + ((getPremiseName() == null) ? 0 : getPremiseName().hashCode());
        result = prime * result + ((getHouseId() == null) ? 0 : getHouseId().hashCode());
        result = prime * result + ((getHouseName() == null) ? 0 : getHouseName().hashCode());
        result = prime * result + ((getHouseType() == null) ? 0 : getHouseType().hashCode());
        result = prime * result + ((getHouseZsNo() == null) ? 0 : getHouseZsNo().hashCode());
        result = prime * result + ((getCqAddress() == null) ? 0 : getCqAddress().hashCode());
        result = prime * result + ((getOwnerId() == null) ? 0 : getOwnerId().hashCode());
        result = prime * result + ((getOwnerName() == null) ? 0 : getOwnerName().hashCode());
        result = prime * result + ((getSignWithOwner() == null) ? 0 : getSignWithOwner().hashCode());
        result = prime * result + ((getOwnerIdCard() == null) ? 0 : getOwnerIdCard().hashCode());
        result = prime * result + ((getOwnerMobile() == null) ? 0 : getOwnerMobile().hashCode());
        result = prime * result + ((getOwnerContactAddress() == null) ? 0 : getOwnerContactAddress().hashCode());
        result = prime * result + ((getSignUserName() == null) ? 0 : getSignUserName().hashCode());
        result = prime * result + ((getSignUserIdCard() == null) ? 0 : getSignUserIdCard().hashCode());
        result = prime * result + ((getSignUserMobile() == null) ? 0 : getSignUserMobile().hashCode());
        result = prime * result + ((getSignUserEmergencyPhone() == null) ? 0 : getSignUserEmergencyPhone().hashCode());
        result = prime * result + ((getBankCard() == null) ? 0 : getBankCard().hashCode());
        result = prime * result + ((getBankUserName() == null) ? 0 : getBankUserName().hashCode());
        result = prime * result + ((getBankUserIdCard() == null) ? 0 : getBankUserIdCard().hashCode());
        result = prime * result + ((getBankId() == null) ? 0 : getBankId().hashCode());
        result = prime * result + ((getBankName() == null) ? 0 : getBankName().hashCode());
        result = prime * result + ((getBankOpen() == null) ? 0 : getBankOpen().hashCode());
        result = prime * result + ((getLeaseStartTime() == null) ? 0 : getLeaseStartTime().hashCode());
        result = prime * result + ((getLeaseEndTime() == null) ? 0 : getLeaseEndTime().hashCode());
        result = prime * result + ((getMonthRent() == null) ? 0 : getMonthRent().hashCode());
        result = prime * result + ((getDepositMoney() == null) ? 0 : getDepositMoney().hashCode());
        result = prime * result + ((getDepositType() == null) ? 0 : getDepositType().hashCode());
        result = prime * result + ((getPaymentType() == null) ? 0 : getPaymentType().hashCode());
        result = prime * result + ((getConSignTime() == null) ? 0 : getConSignTime().hashCode());
        result = prime * result + ((getConInfoTime() == null) ? 0 : getConInfoTime().hashCode());
        result = prime * result + ((getConAudTime() == null) ? 0 : getConAudTime().hashCode());
        result = prime * result + ((getOperId() == null) ? 0 : getOperId().hashCode());
        result = prime * result + ((getSfUserId() == null) ? 0 : getSfUserId().hashCode());
        result = prime * result + ((getSfUserName() == null) ? 0 : getSfUserName().hashCode());
        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
        result = prime * result + ((getXyStatus() == null) ? 0 : getXyStatus().hashCode());
        result = prime * result + ((getSfLoanFlg() == null) ? 0 : getSfLoanFlg().hashCode());
        result = prime * result + ((getFreezeStatus() == null) ? 0 : getFreezeStatus().hashCode());
        result = prime * result + ((getAccountType() == null) ? 0 : getAccountType().hashCode());
        result = prime * result + ((getBankCardNumber() == null) ? 0 : getBankCardNumber().hashCode());
        result = prime * result + ((getAccountName() == null) ? 0 : getAccountName().hashCode());
        result = prime * result + ((getBankBranchCodeLh() == null) ? 0 : getBankBranchCodeLh().hashCode());
        result = prime * result + ((getBankAccountProvince() == null) ? 0 : getBankAccountProvince().hashCode());
        result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
        result = prime * result + ((getReserve1() == null) ? 0 : getReserve1().hashCode());
        result = prime * result + ((getReserve2() == null) ? 0 : getReserve2().hashCode());
        result = prime * result + ((getReserve3() == null) ? 0 : getReserve3().hashCode());
        result = prime * result + ((getReserve4() == null) ? 0 : getReserve4().hashCode());
        result = prime * result + ((getReserve5() == null) ? 0 : getReserve5().hashCode());
        result = prime * result + ((getDelFlg() == null) ? 0 : getDelFlg().hashCode());
        result = prime * result + ((getCreateUserid() == null) ? 0 : getCreateUserid().hashCode());
        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        result = prime * result + ((getUpdateUserid() == null) ? 0 : getUpdateUserid().hashCode());
        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
        result = prime * result + ((getHouseLeaseType() == null) ? 0 : getHouseLeaseType().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", sfContractNo=").append(sfContractNo);
        sb.append(", outContractNo=").append(outContractNo);
        sb.append(", lastContractId=").append(lastContractId);
        sb.append(", lastContractNo=").append(lastContractNo);
        sb.append(", businessId=").append(businessId);
        sb.append(", deptId=").append(deptId);
        sb.append(", deptNo=").append(deptNo);
        sb.append(", premiseName=").append(premiseName);
        sb.append(", houseId=").append(houseId);
        sb.append(", houseName=").append(houseName);
        sb.append(", houseType=").append(houseType);
        sb.append(", houseZsNo=").append(houseZsNo);
        sb.append(", cqAddress=").append(cqAddress);
        sb.append(", ownerId=").append(ownerId);
        sb.append(", ownerName=").append(ownerName);
        sb.append(", signWithOwner=").append(signWithOwner);
        sb.append(", ownerIdCard=").append(ownerIdCard);
        sb.append(", ownerMobile=").append(ownerMobile);
        sb.append(", ownerContactAddress=").append(ownerContactAddress);
        sb.append(", signUserName=").append(signUserName);
        sb.append(", signUserIdCard=").append(signUserIdCard);
        sb.append(", signUserMobile=").append(signUserMobile);
        sb.append(", signUserEmergencyPhone=").append(signUserEmergencyPhone);
        sb.append(", bankCard=").append(bankCard);
        sb.append(", bankUserName=").append(bankUserName);
        sb.append(", bankUserIdCard=").append(bankUserIdCard);
        sb.append(", bankId=").append(bankId);
        sb.append(", bankName=").append(bankName);
        sb.append(", bankOpen=").append(bankOpen);
        sb.append(", leaseStartTime=").append(leaseStartTime);
        sb.append(", leaseEndTime=").append(leaseEndTime);
        sb.append(", monthRent=").append(monthRent);
        sb.append(", depositMoney=").append(depositMoney);
        sb.append(", depositType=").append(depositType);
        sb.append(", paymentType=").append(paymentType);
        sb.append(", conSignTime=").append(conSignTime);
        sb.append(", conInfoTime=").append(conInfoTime);
        sb.append(", conAudTime=").append(conAudTime);
        sb.append(", operId=").append(operId);
        sb.append(", sfUserId=").append(sfUserId);
        sb.append(", sfUserName=").append(sfUserName);
        sb.append(", status=").append(status);
        sb.append(", xyStatus=").append(xyStatus);
        sb.append(", sfLoanFlg=").append(sfLoanFlg);
        sb.append(", freezeStatus=").append(freezeStatus);
        sb.append(", accountType=").append(accountType);
        sb.append(", bankCardNumber=").append(bankCardNumber);
        sb.append(", accountName=").append(accountName);
        sb.append(", bankBranchCodeLh=").append(bankBranchCodeLh);
        sb.append(", bankAccountProvince=").append(bankAccountProvince);
        sb.append(", remark=").append(remark);
        sb.append(", reserve1=").append(reserve1);
        sb.append(", reserve2=").append(reserve2);
        sb.append(", reserve3=").append(reserve3);
        sb.append(", reserve4=").append(reserve4);
        sb.append(", reserve5=").append(reserve5);
        sb.append(", delFlg=").append(delFlg);
        sb.append(", createUserid=").append(createUserid);
        sb.append(", createTime=").append(createTime);
        sb.append(", updateUserid=").append(updateUserid);
        sb.append(", updateTime=").append(updateTime);
        sb.append(", houseLeaseType=").append(houseLeaseType);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}
